//
// Created by 原帅 on 2022/10/2.
//

#ifndef LIBRAFW_RSIGNAL_H
#define LIBRAFW_RSIGNAL_H

#include "map"
#include "vector"
#include "RSigProcIF.h"
#include "signal.h"

using namespace std;

class RSignalCenter {

private:
    static map<int,vector<RSigProcIF*>> SigInterfaces;
    static void SignalProcess(int sigNum);
    /**
     * 接管所有singal，如果没有相关实现，会导致进程的行为不可控
     * @return
     */
    static int RegisterSignalAll();

    /**
     * 向系统注册信号，注册过的信号，会接收回调
     * @param sigNum
     * @return 0
     */
    static int RegisterSignal(int sigNum);
public:
    /**
     * 添加一个信号响应调用，当系统发射信号给进程的时候，会调用关联的注册接口
     * @param sigNum 信号
     * @param sigIf 回调接口
     * @return 返回值0 成功， -1 失败
     */
    static int AddSignalProcessor(int sigNum, RSigProcIF* sigIf);
};


#endif //LIBRAFW_RSIGNAL_H
